package georeduy.dao;

import java.util.List;

import georeduy.clases.Empresa;
import georeduy.clases.Local;
import georeduy.clases.LocalId;
import georeduy.dao.interfaces.ILocalDAO;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;



@Stateless(name = "LocalDAO", mappedName = "GeoRed.uy-GeoRed.uy-JPA-LocalDAO")
public class LocalDAO
        implements  ILocalDAO
{
	
    @PersistenceContext(unitName="Geored.uy-JPA")
    private EntityManager em;

    public void persistLocal(String empresa, Local local)
    {
    	Empresa e = em.find(Empresa.class, empresa);
    	local.setEmpresa(e);
        em.persist(local);
    }
    
    public void mergeLocal(String empresa, Local local)
    {
    	Empresa e = em.find(Empresa.class, empresa);
    	local.setEmpresa(e);
        em.merge(local);
    }

    public void removeLocal(String empresa, String local)
    {
    	Empresa e = em.find(Empresa.class, empresa);
    	LocalId id = new LocalId();
    	id.setEmpresa(e);
    	id.setNombre(local);
        Local l = em.find(Local.class, id);
        em.remove(l);
    }

    @Override
	public Local findLocal(String empresa, String local)
	{
    	Empresa e = em.find(Empresa.class, empresa);
    	LocalId id = new LocalId();
    	id.setEmpresa(e);
    	id.setNombre(local);
		return em.find(Local.class, id);
	}

    @SuppressWarnings("unchecked")
	@Override
    public List<Local> listarLocales(String empresa)
    {
    	Query q = em.createQuery("SELECT l FROM Local l WHERE empresa = :empresa");
    	Empresa e = em.find(Empresa.class, empresa);
    	q.setParameter("empresa", e);
    	return q.getResultList();
    }

}
